
namespace ShoppingCart.WebSite.Admin
{
    using System;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using Code;
    using Business.Logic;
    using DTO = Business.Entity;

    public partial class Pedidos : BasePage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Page.IsPostBack) return;
            CargarPedidos();
        }

        protected void GvPedidosPageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvPedidos.PageIndex = e.NewPageIndex;
            CargarPedidos();
        }

        protected void GvPedidosRowCommand(object sender, GridViewCommandEventArgs e)
        {
            switch (e.CommandName)
            {
                case "Editar":
                    Response.Redirect(string.Format("Pedido.aspx?idPedido={0}&Accion=M", Convert.ToInt32(e.CommandArgument)), true);
                    break;
                case "Eliminar":
                    EliminarPedido(Convert.ToInt32(e.CommandArgument));
                    break;
            }
        }

        protected void DdlEstadoSelectedIndexChange(object sender, EventArgs e)
        {
            var combo = (DropDownList)sender;
            var row = (GridViewRow)combo.Parent.Parent;
            var estado = Convert.ToByte(combo.SelectedValue);
            var idPedido = Convert.ToInt32(row.Cells[0].Text);
            PedidoManager.Instancia.ModificarEstado(idPedido, estado, User.Identity.Name);
            CargarPedidos();
            ScriptManager.RegisterStartupScript(upnActualizar, GetType(), "Mensaje", "alert('El Estado del Pedido fue Modificado.');", true);
        }

        private void CargarPedidos()
        {
            var entidades = PedidoManager.Instancia.ListarPorIdCliente(1, null);
            BindControl<DTO.Pedido>.BindGrid(gvPedidos, entidades);
            litMensaje.Text = string.Empty;
        }

        private void EliminarPedido(int idPedido)
        {
            try
            {
                PedidoManager.Instancia.Eliminar(idPedido);
                CargarPedidos();
                litMensaje.Text = GetMessage("Pedido fue eliminado satisfactoriamente.", MessageType.success);
            }
            catch (Exception ex)
            {
                litMensaje.Text = GetMessage(ex.Message, MessageType.errormsg);
            }
        }
    }
}
